function maxSum(nums: number[], k: number, m: number): number {
    
};

// dp[i:1-n][j:1-k][再来一个结尾是l，就是最后一段子数组的结尾下标是l]
// 但发现没必要 dp[i:1-n][j:1-k]，直接让i是最后一段子数组的结尾下标就好
// dp求完，算结果的逻辑可以改一下，改成扫描求max(dp[i:k-n][k])

// === trans formula
// dp[i][j] = max(
//    dp[i-1][j]+nums[i],
//    mult: dp[x: j-1 ~ i-1][j-1]+ max(x+1 ~ j中以j结尾的和最大的子数组),
// )


/* new plan */
// dp[i:1-n][j:1-k][0-1]：最后一段子数组的结尾下标是不是i]
//      前1-i中 j段子数组 最后一段子数组的结尾下标是不是i 情况下的最大和
// === trans formula
// dp[i][j][0] = max(
//    dp[i-1][j-1][0],
//    dp[i-1][j-1][1],
// ) 
// dp[i][j][1] = max(
//    dp[i-1][j-1][0]+nums[i],
//    dp[i-1][j][1]+nums[i],
// ) 